Tarea 7. Problemas con valores iniciales (EDOs).

Análisis Numérico. Luis Antonio Domínguez Ávila

Abril 2023

Aproxima la solución de los siguientes problemas con valores iniciales con los diferentes métodos provistos por las funciones del package pracma. Comenta la comparación entre las aproximaciones obtenidas y la solución exacta (en caso que se indique).

graf <- function(dy,a,b,y0,sol_exacta=NULL){
sol_euler<-euler_heun(dy,a,b,y0,n=100)
sol_rk<-rk4(dy,a,b,y0,n=100)
sol_ode<-ode45(dy,a,b,y0,hmax=0.05)
grafica <- ggplot()
if (!is.null(sol_exacta)){
  grafica <- grafica +
    geom_function(fun=sol_exacta,xlim=c(a,b),linewidth=1.25,color="deeppink")
}
  grafica <- grafica +
    geom_line(aes(sol_euler$t,sol_euler$y),color="green4",linewidth=0.75)+
    geom_line(aes(sol_rk$x,sol_rk$y),color="firebrick",linewidth=0.75)+
    geom_line(aes(sol_ode$t,sol_ode$y),color="gold",linewidth=0.75)+
    theme_bw()
ggplotly(grafica)
}
grafS<- function(dy,a,b,y0,sol_y1,sol_y2,sol_y3=NULL){
  sol_rk <- rk4sys(dy,a,b,y0,n=100)
  grafica <- ggplot()+
    geom_function(fun=sol_y1,xlim=c(a,b),linewidth=1.25,color="deepskyblue")+
    geom_function(fun=sol_y2,xlim=c(a,b),linewidth=1.25,color="deepskyblue2")+
    
    geom_line(aes(sol_rk$x,sol_rk$y[,1]),color="#ABC111")+
    geom_line(aes(sol_rk$x,sol_rk$y[,2]),color="#DDD222")+
    
    theme_bw()
  if (!is.null(sol_y3)){
    grafica <- grafica +
      geom_function(fun=sol_y3,xlim=c(a,b),linewidth=1.25,color="deepskyblue3")+
      geom_line(aes(sol_rk$x,sol_rk$y[,3]),color="red")
  }
  ggplotly(grafica)
}
  1. \(y'=1+(t-y)^2\), \(2\leq t \leq 3\), \(y(2)=1\). Solución exacta \(y(t)=t+1/(1-t)\)
dy <- function(t,y){
  1+(t-y)^2
}
sol_exacta<-function(t){
  t+1/(1-t)
}
graf(dy,2,3,1,sol_exacta)
  1. \(y'=cos(2t)+sen(3t)\), \(0\leq t\leq 1\), \(y(0)=1\). Solución exacta \[\begin{equation} y(t)=\frac{1}{2}sen(2t)-\frac{1}{3}cos(3t)+\frac{4}{3}. \end{equation}\]
dy <- function(t,y){
  cos(2*t)+sin(3*t)
}
sol_exacta<-function(t){
  0.5*sin(2*t)-1/3*cos(3*t)+4/3
}
graf(dy,0,1,1,sol_exacta)

\[\begin{equation} y'=\frac{y^2+y}{t}, \quad 1\leq t \leq 3, \quad y(1)=-2 \end{equation}\]

dy <- function(t,y){
  (y^2+y)/t
}
# sol_exacta<-function(t){
#   0.5*sin(2*t)-1/3*cos(3*t)+4/3
# }
graf(dy,1,3,-2)

\[\begin{equation} y'=\frac{y}{t}-(y/t)^2, \quad 1\leq t \leq 4, \quad y(1)=1 \end{equation}\]

Solución exacta.

\[\begin{equation} y(t)=\frac{t}{1+log\,t} \end{equation}\]

dy <- function(t,y){
  y/t-(y/t)^2
}
sol_exacta<-function(t){
  t/(1+log(t))
}
graf(dy,1,4,1,sol_exacta)

\[\begin{equation} y'=(t+2t^3)y^3-ty, \quad 0\leq t \leq 2, \quad y(0)=\frac{1}{3} \end{equation}\]

Solución exacta.

\[\begin{equation} y(t)=\frac{1}{\sqrt{3+2t^2+6e^{t^2}}} \end{equation}\]

dy <- function(t,y){
  (t+2*t^3)*y^3-t*y
}
sol_exacta<-function(t){
  1/(sqrt(3+2*t^2+6*exp(t^2)))
}
graf(dy,0,2,1/3,sol_exacta)

\[\begin{equation} y'=\frac{2-2ty}{t^2+1}, \quad 0\leq t \leq 3, \quad y(0)=1 \end{equation}\]

Solución exacta.

\[\begin{equation} y(t)=\frac{2t+1}{t^2+1} \end{equation}\]

dy <- function(t,y){
  (2-2*t*y)/(t^2+1)
}
sol_exacta<-function(t){
  (2*t+1)/(t^2+1)
}
graf(dy,0,3,1,sol_exacta)

\[\begin{equation} \begin{aligned} y'_1&=y_2, &\qquad y_1(0)=1;\\ y'_2&=-y_1-2e^t+1, &\qquad y_2(0)=0;\\ y'_3&=-y_1-e^t+1, &\qquad y_3(0)=1; \end{aligned} \end{equation}\]

para \(0\leq t \leq 2\). Donde las soluciones exactas son:

\[\begin{equation} \begin{aligned} y_1(t)&=cos\,t+ sen\,t-e^t+1\\ y_2(t)&=-sen\, t+cos\, t-e^t\\ y_3(t)&=-sen\,t+cos\,t \end{aligned} \end{equation}\]

dy <- function(t,y){
  y1 <- y[2]
  y2 <- -y[1]-2*exp(t)+1
  y3 <- -y[1]-exp(t)+1
  return(c(y1,y2,y3))
}
a <- 0
b <- 2
y0 <- c(1,0,1)
sol_y1<-function(t){cos(t)+ sin(t)-exp(t)+1}
sol_y2<-function(t){-sin(t)+cos(t)-exp(t)}
sol_y3<-function(t){-sin(t)+cos(t)}
grafS(dy,a,b,y0,sol_y1,sol_y2,sol_y3)

\[\begin{equation} \begin{aligned} y'_1&=3y_1+2y_2-(2t^2+1)e^{2t}, &\qquad y_1(0)=1;\\ y'_2&=4y_1+y_2+(t^2+2t-4)e^{2t}, &\qquad y_2(0)=1; \end{aligned} \end{equation}\]

para \(0\leq t \leq 1\). Donde las soluciones exactas son:

\[\begin{equation} \begin{aligned} y_1(t)&=\frac{1}{3}e^{5t}-\frac{1}{3}e^{-t}+e^{2t}\\ y_2(t)&=\frac{1}{3}e^{5t}+\frac{2}{3}e^{-t}+t^2e^{2t} \end{aligned} \end{equation}\]

dy <- function(t,y){
  y1 <- 3*y[1]+2*y[2]-(2*t^2+1)*exp(2*t)
  y2 <- 4*y[1]+y[2]+(t^2+2*t-4)*exp(2*t)
  return(c(y1,y2))
}
a <- 0
b <- 1
y0 <- c(1,1)
sol_y1<-function(t){1/3*exp(5*t)-1/3*exp(-t)+exp(2*t)}
sol_y2<-function(t){1/3*exp(5*t)+2/3*exp(-t)+t^2*exp(2*t)}
grafS(dy,a,b,y0,sol_y1,sol_y2)

\[\begin{equation} \begin{aligned} y'_1&=y_2-y_3+t, &\qquad y_1(0)&=1;\\ y'_2&=3t^2, &\qquad y_2(0)&=1;\\ y'_3&=y_2+e^{-t}, &\qquad y_3(0)&=-1; \end{aligned} \end{equation}\]

para \(0\leq t \leq 1\). Donde las soluciones exactas son:

\[\begin{equation} \begin{aligned} y_1(t)&=-0.05t^5+0.25t^4+t+2-e^{-t}\\ y_2(t)&=t^3+1\\ y_3(t)&=0.25t^4+t-e^{-t} \end{aligned} \end{equation}\]

dy <- function(t,y){
  y1 <- y[2]-y[3]+t
  y2 <- 3*t^2
  y3 <-y[2]+exp(-t)
  return(c(y1,y2,y3))
}
a <- 0
b <- 1
y0 <- c(1,1,-1)
sol_y1<-function(t){-0.05*t^5+0.25*t^4+t+2-exp(-t)}
sol_y2<-function(t){t^3+1}
sol_y3<-function(t){0.25*t^4+t-exp(-t)}
grafS(dy,a,b,y0,sol_y1,sol_y2,sol_y3)
dy <- function(t,y){
  as.matrix(c(y[2]-y[3]+t,3*t^2,y[2]+exp(-t)))
}
a <- 0
b <- 1
y0 <- as.matrix(c(1,1,-1))
sol_ode <- ode45(dy,a,b,y0,hmax = 0.05)
sol_y1<-function(t){-0.05*t^5+0.25*t^4+t+2-exp(-t)}
sol_y2<-function(t){t^3+1}
sol_y3<-function(t){0.25*t^4+t-exp(-t)}
grafica <- ggplot()+
  geom_function(fun=sol_y1,xlim=c(a,b),linewidth=1.25,color="deepskyblue")+
  geom_function(fun=sol_y2,xlim=c(a,b),linewidth=1.25,color="deepskyblue2")+
  geom_function(fun=sol_y3,xlim=c(a,b),linewidth=1.25,color="deepskyblue3")+
  geom_line(aes(sol_ode$t,sol_ode$y[,1]),color="#ABC111")+
  geom_line(aes(sol_ode$t,sol_ode$y[,2]),color="#DDD222")+
  geom_line(aes(sol_ode$t,sol_ode$y[,3]),color="red")+
  theme_bw()
ggplotly(grafica)

\[\begin{equation} \begin{aligned} y'_1&=3y_1+2y_2-y_3-1-3t-2\, sen\,t, &\qquad y_1(0)&=5;\\ y'_2&=y_1-2y_2+3y_3+6-t+2\,sen\,t+cos\, t, &\qquad y_2(0)&=-9;\\ y'_3&=2y_1+4y_3+8-2t, &\qquad y_3(0)&=-5; \end{aligned} \end{equation}\]

para \(0\leq t \leq 2\). Donde las soluciones exactas son:

\[\begin{equation} \begin{aligned} y_1(t)&=2e^{3t}+3e^{-2t}+t\\ y_2(t)&=-8e^{-2t}+e^{4t}-2e^{3t}+\,sen\,t\\ y_3(t)&=2e^{4t}-4e^{3t}-e^{-2t}-2 \end{aligned} \end{equation}\]

dy <- function(t,y){
  y1 <- 3*y[1]+2*y[2]-y[3]-1-3*t-2*sin(t)
  y2 <- y[1]-2*y[2]+3*y[3]+6-t+2*sin(t)+cos(t)
  y3 <-2*y[1]+4*y[3]+8-2*t
  return(c(y1,y2,y3))
}
a <- 0
b <- 2
y0 <- c(5,-9,-5)
sol_y1<-function(t){2*exp(3*t)+3*exp(-2*t)+t}
sol_y2<-function(t){-8*exp(-2*t)+exp(4*t)-2*exp(3*t)+sin(t)}
sol_y3<-function(t){2*exp(4*t)-4*exp(3*t)-exp(-2*t)-2}
grafS(dy,a,b,y0,sol_y1,sol_y2,sol_y3)
  1. \(y''-2y'+y=t\,e^t-t\), \(0\leq t\leq 1\), \(y(0)=y'(0)=0\).

Solución exacta:

\[\begin{equation} y(t)=\frac{1}{6}t^3e^t-te^t+2e^t-t-2. \end{equation}\]

dy <- function(t,u){
  u1 <- u[2]
  u2 <- t*exp(t)+2*u[2]+u[1]
  return(c(u1,u2))
}

a <-0
b <- 1
y0 <- c(0,0)

sol_rk <- rk4sys(dy,a,b,y0,n=100)
sol_exacta <-function(t){
  (1/6)*t^3*exp(t)-t*exp(t)+2*exp(t)-t-2
}
grafica <- ggplot()+
geom_function(fun=sol_exacta,xlim=c(a,b),linewidth=1.25, color="yellow2")+

geom_line(aes(sol_rk$x,sol_rk$y[ ,1]),color="violetred")+
geom_line(aes(sol_rk$x,sol_rk$y[ ,2]),color="springgreen1")+

theme_bw()
ggplotly(grafica)
  1. \(y'''+2y''-y'-2y=e^t\), \(0\leq t\leq 3\), \(y(0)=1\), \(y'(0)=2\), \(y''(0)=0\).

Solución exacta:

\[\begin{equation} y(t)=\frac{43}{36}e^t+\frac{1}{4}e^{-t}-\frac{4}{9}e^{-2t}+\frac{1}{6}te^t. \end{equation}\]

dy <- function(t,u){
  u1 <- u[2]
  u2 <- u[3]
  u3 <- exp(t)-2*u[3]+u[2]+2*u[1]
  return(c(u1,u2,u3))
}

a <-0
b <- 3
y0 <- c(1,2,0)

sol_rk <- rk4sys(dy,a,b,y0,n=100)
sol_exacta <-function(t){
  (43/36)*exp(t)+(1/4)*exp(-t)-(4/9)*exp(-2*t)+(1/6)*t*exp(t)
}
grafica <- ggplot()+
geom_function(fun=sol_exacta,xlim=c(a,b),linewidth=1.25, color="yellow2")+
#geom_function(fun=sol_y1,xlim=c(a,b),linewidth=1.25, color="yellow2")+
#geom_function(fun=sol_y1,xlim=c(a,b),linewidth=1.25, color="yellow2")+

geom_line(aes(sol_rk$x,sol_rk$y[ ,1]),color="violetred")+
geom_line(aes(sol_rk$x,sol_rk$y[ ,2]),color="springgreen1")+
geom_line(aes(sol_rk$x,sol_rk$y[ ,3]),color="coral")+
theme_bw()
ggplotly(grafica)
  1. \(t^3y'''+t^2y''-2ty'+2y=8t^3-2\), \(1\leq t\leq 2\), \(y(1)=2\), \(y'(1)=8\), \(y''(1)=6\). Solución exacta: \(y(t)=2t-t^{-1}+t^2+t^3-1\).
dy <- function(t,u){
  u1 <- u[2]
  u2 <- u[3]
  u3 <- (1/t^3)*(8*t^3-2-t^2*u[3]+2*t*u[2]-2*u[1])
  return(c(u1,u2,u3))
}

a <- 1
b <- 10
y0 <- c(2,6,8)

sol_rk <- rk4sys(dy,a,b,y0,n=100)
sol_exacta <-function(t){
  2*t-t^(-1)+t^2+t^3-1
}
grafica <- ggplot()+
geom_function(fun=sol_exacta,xlim=c(a,b),linewidth=1.25, color="yellow2")+

geom_line(aes(sol_rk$x,sol_rk$y[ , 1]),color="violetred", linetype="dashed")+
geom_line(aes(sol_rk$x,sol_rk$y[ , 2]),color="springgreen1", linetype="dashed")+
geom_line(aes(sol_rk$x,sol_rk$y[ , 3]),color="coral", linetype="dashed")+
theme_bw()
ggplotly(grafica)